设备就像文件
Unix 系统中, 每个设备都被当做一个文件. 每个设备都有一个文件名、一个 i-node 号、 一个文件所有者、一个权限位的集合和最近修改时间.
设备具有文件名
每个加载到 Unix 机器的设备都通过文件名表示.
设备和系统调用
设备不仅具有文件名, 而且支持与所有文件相关的系统调用: open、read、write、 lseek、close 和 stat
终端就像文件
write0.c
#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> int main( int argc, char **argv ) { int fd; char buf[BUFSIZ]; if (argc !=2 ){ fprintf(stderr, "usage: %s ttyname\n", argv[0]); return 1; } fd = open(argv[1], O_WRONLY); if (fd == -1){ perror(argv[1]); return 1; } while (fgets(buf, BUFSIZ, stdin) != NULL) if( write(fd, buf, strlen(buf)) == -1) break; close(fd); return 0; }
设备文件和 i-node
每个i-node编号指向 i-node 表中的一个结构. i-node 可以是磁盘文件的, 也可以是设 备文件的. i-node 的类型被记录在结构 stat 的成员变量 st_mode 的类型区域中